home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
utils
/
maxidi22.lzh
/
SET_TIME.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-01-29
|
3KB
|
152 lines
/* 15.11.86 Max Böhm */
#include <osbind.h>
read_str (str, len) /* str[] muss len+1 Elemente haben */
char str[];
int len;
{
long c;
int scan,ascii,i;
i=0;
do
{ c=Crawcin ();
ascii=c;
scan=c>>16;
if ((scan==14||scan==75)&&i) /* Backspace */
{ Cconws ("\10 \10");
i--;
}
if (i<len&&ascii>=32&&ascii!=127&&(scan<58||scan==74||scan==78||scan>98))
{ Cconout (ascii);
str[i++]=ascii;
}
}
while (scan!=28&&scan!=114); /* nicht Return */
Cconws ("\r\n");
str[i]=0;
return (i);
}
get_date (day, month, year)
int *day, *month, *year;
{
unsigned int date;
date=Tgetdate ();
*day=date&31;
*month=date>>5&15;
*year=(date>>9)+80;
}
set_date (day, month, year)
int day, month, year;
{
Tsetdate (day+(month<<5)+((year-80)<<9));
}
get_time (hour, minute, second)
int *hour, *minute, *second;
{
unsigned int time;
time=Tgettime ();
*second=2*(time&31);
*minute=time>>5&63;
*hour=time>>11;
}
set_time (hour, minute, second)
int hour, minute, second;
{
Tsettime (second/2+(minute<<5)+(hour<<11));
}
atoi (str_pt, n, num)
char **str_pt;
int n, *num;
{
char ch;
do
{ if (!(ch=**str_pt))
return;
(*str_pt)++;
}
while (ch<'0'||ch>'9');
*num=ch-'0';
while (--n&&(ch=**str_pt)>='0'&&ch<='9')
{ *num=10 * *num + ch-'0';
(*str_pt)++;
}
}
itoa_2 (str, num)
char *str;
int num;
{
str[0]=(num/10)%10 + '0';
str[1]=num%10 + '0';
}
set_num (str, a, b, c)
char *str;
int *a, *b, *c;
{
atoi (&str, 2, a);
atoi (&str, 2, b);
atoi (&str, 0, c);
*c%=100;
}
set_str (str, a, b, c, ch)
char *str, ch;
int a, b, c;
{
itoa_2 (str, a);
itoa_2 (str+3, b);
itoa_2 (str+6, c);
str[2]=str[5]=ch;
str[8]=0;
}
put_date (str)
char *str;
{
int day, month, year;
get_date (&day, &month, &year);
set_num (str, &day, &month, &year);
set_date (day, month, year);
get_date (&day, &month, &year);
set_str (str, day, month, year, '/');
}
put_time (str)
char *str;
{
int hour, minute, second;
get_time (&hour, &minute, &second);
second=0;
set_num (str, &hour, &minute, &second);
set_time (hour, minute, second);
get_time (&hour, &minute, &second);
set_str (str, hour, minute, second, ':');
}
main ()
{
char str[9];
unsigned int date, time;
Cconws ("\33eDatum: ");
read_str (str, 8);
put_date (str);
Cconws ("\33IDatum: ");
puts (str);
Cconws ("Zeit : ");
read_str (str, 8);
put_time (str);
Cconws ("\33IZeit : ");
puts (str);
date=Tgetdate ();
time=Tgettime ();
Settime(((long)date<<16) + time);
}